// 封装axios请求模块: 1.请求头携带token     2.响应拦截器处理错误     3.区分模拟端还是真实服务器端, 摘取核心响应数据    4.处理401错误

import axios from 'axios'
import router from '@/router'
import { ElMessage } from 'element-plus'
import { useUserStore } from '@/stores/userStore'

const baseURL = 'http://localhost:20002'
const userStore = useUserStore()

// 创建 axios 实例
const instance = axios.create({
  baseURL,
  timeout: 10000
})

// 请求拦截器：可用于添加 token
instance.interceptors.request.use(
  (config) => {
    // 从 Pinia 获取 token
    const token = userStore.token
    if (token) {
      config.headers.Authorization = `Bearer ${token}`
      config.headers.token = token
    }
    return config
  },
  (err) => Promise.reject(err)
)

// 响应拦截器
instance.interceptors.response.use(
  (res) => {
    // 加强健壮性，防止 data 为 null 报错
    const data = res.data
    if (!data) {
      ElMessage.error('响应数据为空')
      return Promise.reject(new Error('响应数据为空'))
    }

    // 正确响应（code 为 200 或 1）
    if (data.code === 200 || data.code === 1) {
      return res.data
    }

    // 错误响应，统一提示
    ElMessage.error(data.msg || '服务异常')
    return Promise.reject(data)
  },
  (err) => {
    console.error('请求错误：', err)

    // 避免 err.response 为 null 报错
    const status = err?.response?.status
    const msg = err?.response?.data?.msg || err.message || '服务异常'

    ElMessage.error(msg)

    // 如果是 401，跳转到登录页
    if (status === 401) {
      ElMessage.error('身份验证失败，请重新登录')
      router.push('/login')
    }

    return Promise.reject(err)
  }
)

export default instance
export { baseURL }


// import axios from 'axios'
// import router from '@/router'
// import { ElMessage } from 'element-plus'

// const baseURL = 'http://localhost:20002'

// // 创建 axios 实例
// const instance = axios.create({
//   baseURL,
//   timeout: 10000
// })

// // 请求拦截器：可用于添加 token
// instance.interceptors.request.use(
//   (config) => {
//     // 可选：从 localStorage 取 token
//     const token = localStorage.getItem('token')
//     if (token) {
//       config.headers.Authorization = `Bearer ${token}`
//       config.headers.token = token
//     }
//     return config
//   },
//   (err) => Promise.reject(err)
// )

// // 响应拦截器
// instance.interceptors.response.use(
//   (res) => {
//     // ✅ 加强健壮性，防止 data 为 null 报错
//     const data = res.data
//     if (!data) {
//       ElMessage.error('响应数据为空')
//       return Promise.reject(new Error('响应数据为空'))
//     }

//     // ✅ 正确响应（code 为 200 或 1）
//     if (data.code === 200 || data.code === 1) {
//       return res.data
//     }

//     // ❌ 错误响应，统一提示
//     ElMessage.error(data.msg || '服务异常')
//     return Promise.reject(data)
//   },
//   (err) => {
//     console.error('请求错误：', err)

//     // 避免 err.response 为 null 报错
//     const status = err?.response?.status
//     const msg = err?.response?.data?.msg || err.message || '服务异常'

//     ElMessage.error(msg)

//     // 如果是 401，跳转登录
//     if (status === 401) {
//       router.push('/login')
//     }

//     return Promise.reject(err)
//   }
// )

// export default instance
// export { baseURL }
